CONTENTS | INDEX | PREV | NEXT
WEDGE LIMITATIONS
Due to the need for WEDGE to be fast and small and to call as few library
functions as possible, there are certain arbitrary limitations.
1. The Exec functions RawIOInit, RawDoFmt, RawMayGetChar, and RawPutChar()
may not be WEDGEd because they are called indirectly by the WEDGE itself.
If these functions were WEDGEd, a recursive loop would occur. WEDGE
caches pointers to Forbid and Permit. Installed WEDGEs call these
functions using these pointers, so these functions may be WEDGEd.
2. To help prevent such recursive loops in Local mode, function calls made
by the Local output handler are not reported. Unless CLI output
redirection has been used, the Local handler is a CON: window. All
function calls made by the standard Amiga Exec devices are automatically
screened out in Local mode, since our devices are not Processes.
However, be warned that if you redirect Local output to a third party
handler or device, a recursive loop (and big crash) can occur.
3. There are size limits for several WEDGE arguments:
tasklist 31 task names; 319 characters
library 39 characters
comment 79 characters
4. The maximum size for KILLALL and LIST is 127 WEDGEs.
5. The CLI command names specified in the tasklist option must be 16
characters or less. If you want to monitor or exclude a command with a
larger name, rename it. There is no limit on the size of normal Exec
Task names in the tasklist.
WARNINGS
1. In some cases, the caller of a WEDGEd function may have so little
available stack that the WEDGE code to save the caller's registers and
to check his stack may overrun it. If this happens, severe crashes can
occur. Use the tasklist to screen out tasks with tiny stacks.
2. WEDGE contains a number of safety features to prevent recursion.
However, the possibility of recursive crashes still exists, most notably
in Local mode. See the note on Local recursion in "WEDGE Limitations."
3. When creating masks for REGS and PTRS, do not indiscriminately specify
registers as pointers. Only specify a register as a pointer if the
address of a string, structure, buffer, etc. is actually passed in that
register. If a register is specified as a pointer, its contents will be
used as an ad dress and the data at that address will be read. If the
register actually contains flags or other non-address data, you could
end up reading registers which are reset by a read. This could cause a
crash.
4. If you WEDGE common Exec functions, such as AllocMem() and Signal(),
with out excluding low level OS tasks such as input.device and
trackdisk.device, the system will slow to a crawl. It is strongly
suggested that you do not write to disks while an intensive WEDGE is
running. (It would take forever anyway.)